<?php

/**
 * 管理员操作日志类
 * Class Admin_logApp
 */
class Admin_logApp extends BackendApp
{

    // 初始化一个变量，用于保存返回值
    var $_admin_log_mod;

    /**
     * 构造函数，执行初始化函数
     * Admin_logApp constructor.
     */
    function __construct()
    {
        $this->Admin_logApp();
    }

    /**
     * 日志初始化函数
     */
    function Admin_logApp()
    {
        parent::BackendApp();
        $this->_admin_log_mod = &m('admin_log');
    }

    /**
     * 默认首页
     */
    function index()
    {
        $conditions = $this->_get_query_conditions(
            [
                [
                    'field' => 'admin_name', //按用户名,店铺名,支付方式名称进行搜索
                    'equal' => 'LIKE',
                    'name' => 'admin_name',
                ],
                [
                    'field' => 'created_at',
                    'name' => 'add_time_from',
                    'equal' => '>=',
                    // 字段为标准时间，不需要额外处理
                    // 'handler' => 'gmstr2time',
                ],
                [
                    'field' => 'created_at',
                    'name' => 'add_time_to',
                    'equal' => '<=',
                    // 字段为标准时间，不需要额外处理           
                    // 'handler' => 'gmstr2time_end',
                ],
            ]);

        //更新排序
        if (isset($_GET['sort']) && !empty($_GET['order'])) {
            $sort = strtolower(trim($_GET['sort']));
            $order = strtolower(trim($_GET['order']));
            if (!in_array($order, ['asc', 'desc'])) {
                $sort = 'created_at';
                $order = 'desc';
            }
        } else {
            if (isset($_GET['sort']) && empty($_GET['order'])) {
                $sort = strtolower(trim($_GET['sort']));
                $order = "";
            } else {
                $sort = 'created_at';
                $order = 'desc';
            }
        }

        $page = $this->_get_page(10);
        $admin_log_list = $this->_admin_log_mod->find([
            'conditions' => "1=1 " . $conditions,
            'limit' => $page['limit'],
            'order' => "$sort $order",
            'count' => true,
        ]);

        // 格式化input输出 start，Powered by liuzongyang 2019/10/7 15:54
        foreach ($admin_log_list as $k => $v) {
            // 如果是json，则格式化，普通文本则不处理
            if ($this->isJson($v['input'])) {
                $admin_log_list[$k]['input'] = json_encode(json_decode($admin_log_list[$k]['input'], true), JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
            }
        }
        // 格式化input输出 end

        $page['item_count'] = $this->_admin_log_mod->getCount();   //获取统计数据
        $this->_format_page($page);
        $this->assign('filtered', $conditions ? 1 : 0); //是否有查询条件
        $this->assign('page_info', $page);   //将分页信息传递给视图，用于形成分页条
        $this->assign('admin_log_list', $admin_log_list);
        $this->import_resource(['script' => 'jqtreetable.js,inline_edit.js,inline_edit.js,jquery.ui/jquery.ui.js,jquery.ui/i18n/' . i18n_code() . '.js',
            'style' => 'jquery.ui/themes/ui-lightness/jquery.ui.css,res:style/jqtreetable.css']);
        $this->display('admin_log.index.html');
    }

    /**
     * 判断数据是否为合法的json字符串
     * @param $data
     * @param bool $assoc
     * @return bool
     */
    function isJson($data, $assoc = false)
    {
        // 逻辑
        // 因为json_decode里面放的只要是非string类型就会报错，这个需要加个@强制屏蔽，否则将无法进行下面的验证
        $data = @json_decode($data, $assoc);
        if (($data && (is_object($data))) || (is_array($data) && !empty($data))) {
            return true;
        }
        return false;
    }    

}

?>